Online computer services are large regional or national networks accessible to consumers by subscription. Providers offer their subscribers a wide range of services, including on-demand access to electronically represented newspapers, software and documents that can be "downloaded" at the user's request; discussion groups in which subscribers can take part by computer; electronic mail among subscribers and non-subscribers; and various forms of entertainment. Generally, consumers connect to a service via telephone, and the service charges its subscribers a recurring fee for its basic service package and a variable fee for the time they are actually connected.
Online services have experienced an enormous increase in their customer bases in the last few years, owing both to the proliferation and growing sophistication of personal computers as well as to the expansion of available services. The need to provide a large, widely dispersed user group with on-demand access to the central online service requires substantial computational capability. The service must not only control and monitor user access, but must also maintain a large, constantly growing reservoir of information to which many users must have simultaneous access.
One widely accepted computer architecture, developed specifically to accommodate the "distributed computing" environments that characterize online services, is the client-server model. In its purest form, a client-server system consists of a central server (sometimes called the host), which is a very powerful computer (or cluster of computers that behaves as a single computer) that services the requests of a large number of smaller computers, or clients, that connect to it. The client computers never communicate with one another, instead exchanging data only with the server, which thereby acts a clearinghouse for client requests and inter-client communications. A server, therefore, may be a large mainframe or minicomputer cluster, while the clients may be simple personal computers.
Although they need not be powerful, it is nonetheless important that clients possess a basic level of on-board processing capability; unlike older timeshare systems, which utilized "dumb" terminals that were essentially driven by the central machine, the client-server model requires that each client be capable of independent computational operation. In this way, the central server need only accept and deliver messages to the clients, which process them for output to the user. This approach limits the processing burden on the server and facilitates faster, readily customized responses by the clients.
An exemplary client-server configuration is illustrated in FIG. 1. A central server 10 communicates with a series of client computers 12.sub.1, 12.sub.2, 12.sub.3, 12.sub.4 . . . 12.sub.n over a coextensive series of physical connections 14.sub.1, 14.sub.2, 14.sub.3, 14.sub.4 . . . 14.sub.n. The terms "server" and "host" are herein used interchangeably to denote a central facility consisting of a single computer or group of computers that behave as a single unit with respect to the clients. In order to ensure proper routing of messages between the server and the intended client, the messages are first broken up into data packets, each of which receives a destination address according to a consistent protocol, and which are reassembled upon receipt by the target computer. A commonly accepted set of protocols for this purpose are the Internet Protocol, or IP, which dictates routing information; and the transmission control protocol, or TCP, according to which messages are actually broken up into IP packets for transmission for subsequent collection and reassembly. TCP/IP connections are quite commonly employed to move data across telephone lines, and have been adopted not only by online services but throughout the worldwide, integrated network communication web known as the Internet.
The Internet contains vast stores of technical and academic information, but much of this is formatted as undifferentiated text, and requires mastery of a difficult command vocabulary to access effectively. The information provided by online services, in contrast, is readily accessible without special training, tailored in content to the interests of subscribers, and presented in a visually appealing fashion. Online services typically offer their subscribers access to the Internet as well, once again in a format designed to promote easier identification and retrieval of information.
In order to support user-friendly interfaces and immediate data access (which require substantial computational resources) while avoiding an excessive processing burden on the central server, online services typically locate some applications on the clients themselves; the applications executed by the server can then be confined primarily to data management and transfer. In this sense, the term "application" denotes a body of functionality for obtaining, processing and/or presenting data to a user. For example, electronic mail (e-mail) facilities allow the user to send and receive memo-type communications; document browsers display hierarchically organized collections of document titles, any of which can be obtained by a user simply by "clicking" on a title with a position-sensing mouse device or otherwise designating the document. Applications can be "active," operating only when affirmatively engaged by a user, or maintain a "background" task mode, which operates even when the application is not active. Furthermore, most current personal computers permit the user to operate more than one active application at a given time; the interface for each typically appears in an isolated rectangular portion of the screen called a "window." Thus, for example, a user might have a document browser and a viewer displaying the contents of a selected article each running as an active application in a separate window; and also a background task continuously checking for the arrival of new e-mail.
Rational allocation of computational responsibility among clients and the server provides obvious efficiency benefits. Freed to obtain and transfer data rather than process it for visual appeal, the central server can access a very large database with far greater speed; and clients can orchestrate on-screen presentation far more efficiently than a remote server can transmit detailed display instructions. This arrangement is also desirable from a business perspective, since it permits third-party developers to create client software that users can purchase if they so choose; the availability of such software increases the appeal of the online service at no cost to the service provider.
Separation of function is not without its complications, however. The more data-processing responsility that is shifted to the clients, the more computational actors, each with its own address, identity, and suite of active applications, appear on the network stage. Every client, for example, is capable of running multiple applications each of which communicate with corresponding data-handling applications on the central server. Communcations between client and server machines occur over physical TCP/IP connections, while communications among individual client and server applications occur over "circuits," or logical connections; a single physical connection can support numerous multiplexed logical connections. The accurate directing of messages among numerous, simultaneously active client and server applications represents a prodigious task. The degree of difficulty associated with proper maintenance of inter-application communication is sometimes expressed in terms of resource cost. There is a computational cost associated with initiating a circuit, a cost to finding the proper application to service a particular request, a cost to terminating a circuit, and a cost to maintaining a logical connection that is unused.
Furthermore, distribution of functionality ordinarily means that the client software must "know" a great deal about the server applications with which it communicates. Those few current online service systems that support multiple logical conncections ordinarily require each client application to maintain its own set of connections to the host applications with which they may communicate. This approach effectively ignores the costs discussed above (since connections are maintained whether they are used or not), accepting inefficiency as the price of multiple communication channels; and increases the programming costs associated with client applications (since they must be able to target and interact with specific server applications), discouraging third-party development.
Because server applications are largely or even entirely dedicated to the location, retrieval and transmission of information, they must communicate not only with client applications but also with large, host-based databases. These contain data that differ in type, mode of generation and ultimate use. To maintain application flexibility and accommodate rapid database expansions, online services usually divide data into separate databases accessible, as appropriate, to the various host applications (each of which typically manages a particular type of data). Naturally, it is desirable to isolate client applications from the details of host and database organization (which may be complex and change frequently), and to allow information requests from clients to specify the desired data with the least feasible amount of precision. Accordingly, it is generally preferred not to require the client application to maintain awareness of the storage locations of requested items.
One accepted alternative is for the host to maintain a separate master locator database that a client application queries to determine the location of a stored information item. This creates a communication bottleneck, since every client must access the master database each time it makes a request. Another approach is to establish a clearinghouse structure on the server, which dispatches requests to appropriate applications based on the type of data being requested. This, however, merely substitutes one form of bottleneck for another (and ordinarily relies, ultimately, on some form of master locator database).